package isanfeng.tuxiaoer.pattern.creational.Asimplefactory;

/**
 * 简单工厂
 * 定义：
 *   由一个工厂对象决定创建出哪一种产品类的实例
 * 适用场景：客户端只知道传入工厂类的参数，对于如何创建对象（逻辑）不关心。
 * 优点：只需要传入一个正确的参数，就可以获取你所需要的对象而无须知道其创建细节。
 * 缺点：工厂类的职责相对过重，增加新的产品需要修改工厂类的逻辑判断，违背开闭原则。
 * JDK源码：Calendar、mysql驱动
 * @author 李红辉
 * @version 1.0
 * @date 2019/8/29 17:03
 */
public class Test {
    public static void main(String[] args) {
//        VideoFactory videoFactory = new VideoFactory();
//        Video video = videoFactory.getVideo("java");
//        if (video == null) {
//            return;
//        }
//        video.produce();
        VideoFactory videoFactory = new VideoFactory();
        Video video = videoFactory.getVideo(JavaVideo.class);
        if (video == null) {
            return;
        }
        video.produce();
    }
}
